package lf.day0109.travel.uilts;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class ConfigManager {
    //1.定义静态实例引用
    private static ConfigManager configManager;
    //定义一个静态Properties(解析处理文件资源文件相关信息类) 实例引用
    private static Properties properties;

    //2.私有构造
    private ConfigManager(){
        /*初始加载处理  数据库资源配置文件*/
        //①定义database.properties 配置文件路径
        String configPath = "db/database.properties";
        //②创建properties实例对象
        properties = new Properties();
        //③通过类加载器加载解析 database.properties 配置文件
        InputStream is = ConfigManager.class.getClassLoader().getResourceAsStream(configPath);
        //④加载输入流
        try{
            properties.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            if(is != null){
                try {
                    //释放输入流资源
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    //3.对外提供调用该类静态实例的静态方法
    public static ConfigManager getInstance(){
        //判断该静态实例是否为空
        if(configManager == null){
            //加锁
            synchronized (ConfigManager.class){
                //双重校验判断
                if(configManager == null){
                    configManager = new ConfigManager();
                }
            }
        }
        return configManager;
    }

    //4.对应提供一个获取properties资源配置文件信息的方法
    public String getProperty(String key){
        return properties.getProperty(key);
    }
}
